Programmable integrated circuits are a type of integrated circuit that can be configured by a user to implement custom logic functions. In a typical scenario, a logic designer uses computer-aided design (CAD) tools to design a custom logic circuit. When the design process is complete, the CAD tools generate configuration data. The configuration data is loaded into a programmable integrated circuit to configure the device to perform desired logic functions.
Programmable integrated circuits include input-output circuitry that is used for communications with external circuits such as memory and network devices. Because programmable integrated circuits can be configured in many different ways and are installed on many different types of boards, it can be challenging to design input-output circuitry that accommodates multiple configurations of the programmable integrated circuits, especially with ever-increasing communications speeds and performance requirements. For example, conventional integrated circuits typically include dedicated input-output circuitry at each input-output pin for each possible communications function. Communications functions include high-speed functions such as external memory communications or high-speed network communications. However, input-output circuitry for high-speed functions can include complex clock circuitry such as large multiplexers and clock phase interpolators that occupy a disproportionate amount of valuable circuit area.